<?php
// +----------------------------------------------------------------------
// | HisiPHP框架[基于ThinkPHP5.1开发]
// +----------------------------------------------------------------------
// | Copyright (c) 2016-2021 http://www.HisiPHP.com
// +----------------------------------------------------------------------
// | HisiPHP承诺基础框架永久免费开源，您可用于学习和商用，但必须保留软件版权信息。
// +----------------------------------------------------------------------
// | Author: 橘子俊 <364666827@qq.com>，开发者QQ群：50304283
// +----------------------------------------------------------------------

namespace app\common\service;

use app\common\service\Base;
use think\facade\Cache;

class FactoryOutgo extends Base
{

	/**
	 * 根据编号获取外发工厂信息
	 *
	 * @author KING
	 * @date 2020年7月1日
	 *
	 * @param string $code
	 * @return array
	 */
	public function getInfoByCode($code) {
		return db('factory_outgo')->where('code', $code)->findOrEmpty();
	}
	/**
	 * 根据ID获取外发工厂信息
	 *
	 * @author KING
	 * @date 2020年7月1日
	 *
	 * @param string $code
	 * @return array
	 */
	public function getInfoById($id) {
		return db('factory_outgo')->where('id', $id)->findOrEmpty();
	}
	/**
	 * 获取键值对缓存
	 *
	 * @author KING
	 * @date 2020年6月9日
	 *
	 * @return array
	 */
	public function getKVCache($status=1) {
		if ($status == 1) {
			$data = cache(KV_FACTORY_OUTGO);
		} else {
			$data = cache(KV_FACTORY_OUTGO_ALL);
		}
		if(!$data) {
			$this->updateKVCache();
			if ($status == 1) {
				$data = cache(KV_FACTORY_OUTGO);
			} else {
				$data = cache(KV_FACTORY_OUTGO_ALL);
			}
			return $data;
		} else return $data;
	}

	/**
	 * 更新键值对缓存
	 *
	 * @author KING
	 * @date 2020年6月9日
	 *
	 */
	public function updateKVCache() {
		$list = $this->getKVList(1);
		cache(KV_FACTORY_OUTGO, $list);
		$list = $this->getKVList(null);
		cache(KV_FACTORY_OUTGO_ALL, $list);
		$list = $this->getKVListGbFactoryIds(1);
		cache(KV_FACTORY_OUTGO_GB_FACTORYIDS, $list);
		$list = $this->getKVListGbFactoryIds(null);
		cache(KV_FACTORY_OUTGO_GB_FACTORYIDS_ALL, $list);
		return true;
	}

	/**
	 * 获取键值对列表
	 *
	 * @author KING
	 * @date 2020年6月9日
	 *
	 * @param integer $status
	 * @return array
	 */
	public function getKVList($status=1) {
		$where = [];
		if ($status !== null) $where['status'] = $status;
		$order = "order desc, id desc";
		return db('factory_outgo')->where($where)->order($order)->column('name', 'id');
	}
	
	/**
	 * 获取键值对列表按照工厂分类
	 *
	 * @author 飞燕
	 * @date 2021年5月21日
	 *
	 * @param integer $status
	 * @return array
	 */
	public function getKVListGbFactoryIds($status=1) {
		$factoryOutgoGbFactoryIdsKV = $where = [];
		$where1 = "";
		if ($status !== null) $where['status'] = $status;
		$order = "order desc, id desc";
		$factoryIds=db('factory')->column('id');
		foreach ($factoryIds as $key => $value) {
			$where1="FIND_IN_SET('$value',factory_ids)";
			//根据工厂ID分组
			$factoryOutgoGbFactoryIdsKV[$value]=db('factory_outgo')->where($where1)->where($where)->order($order)->column('name', 'id');
		}
		return $factoryOutgoGbFactoryIdsKV;
	}
	/**
	 * 获取根据工厂分类后的外发工厂键值对缓存
	 *
	 * @author 飞燕
	 * @date 2021年5月21日
	 *
	 * @return array
	 */
	public function getKVGbFactoryIdsCache($status=1) {
		if ($status == 1) {
			$data = cache(KV_FACTORY_OUTGO_GB_FACTORYIDS);
		} else {
			$data = cache(KV_FACTORY_OUTGO_GB_FACTORYIDS_ALL);
		}
		if(!$data) {
			$this->updateKVCache();
			if ($status == 1) {
				$data = cache(KV_FACTORY_OUTGO_GB_FACTORYIDS);
			} else {
				$data = cache(KV_FACTORY_OUTGO_GB_FACTORYIDS_ALL);
			}
			return $data;
		} else return $data;
	}
}